// 创建和更新
//1.以openid为用户id来添加更新删除数据（更改同一条数据）
//2.包含所有邮卡、更新时间、合成卡片并随机奖品

// 云函数入口文件
const cloud = require('wx-server-sdk')

cloud.init()
const db = cloud.database();
const you = db.collection('you');
const _ = db.command;
// 云函数入口函数
exports.main = async(event, context) => {
  const wxContext = cloud.getWXContext()
  // 查询该用户在数据库中的记录
  let user = await you.where({
    '_openid': wxContext.OPENID,
  }).get();

  //随机邮字
  let type;
  let rand = Math.random()
  switch (true) {
    case (rand < 0.3):
      type = 0;
      break;
    case (rand < 0.6 && rand >= 0.3):
      type = 1;
      break;
    case (rand < 0.9 && rand >= 0.6):
      type = 2;
      break;
    case (rand >= 0.9):
      type = 3;
      break;
  }
  // 用户记录长度为0，代表第一次使用，使用add操作
  if (user.data.length == 0) {
    let words = [
      {
        name: '邮家贷',
        type: 0,
        number: 0
      },
      {
        name: '邮薪贷',
        type: 1,
        number: 0
      },
      {
        name: '邮学贷',
        type: 2,
        number: 0
      },
      {
        name: '邮展柜',
        type: 3,
        number: 0
      }

    ];

    //控制随机的字 +1
    words[type].number += 1;
    let data = {
      '_openid': wxContext.OPENID,
      'words': words,
      "personaddr":null,
      "personname":null,
      "personnumber":null,
      updateTime: getDay(),
      times: 1,
      prize: null
    }

    
    let result = await you.add({
     data:data
    })

    return {
      msg: "添加成功",
      result: result,
      type:type,     //抽到邮的种类

    }

  }else {
    //  除第一次外，都是更新操作
    user = user.data[0];
    if (user.times <= 0 && user.updateTime == getDay()) {
      return{
        msg: '今天次数已经用完，明天继续~~',
          success: false
      }
   


    }
    //  times代表剩余次数，在第二天时重置
    let times;
    if (user.updateTime !== getDay()) {
      times = 1
    }


    // 增加一个
    user.words[type].number += 1;
    let result = await you.where({
      '_openid': wxContext.OPENID
    }).update({
      data: {
      "words":user.words,
      // 可用次数-1
      'times': times || _.inc(-1),
      // 获取今天日期
      "updateTime": getDay()
      }
    })
    return {
      msg: "修改成功",
      result: result,
      getDay: getDay(),
      type:type

    }

  }
}

function getDay() {
  let d = new Date();
  return d.getFullYear() + "-" + (d.getMonth() + 1) + "-" + d.getDate();
}